const ui = require('../utils/ui');
const BASE_URL = 'https://www.wrzztech.top/seller'
// const BASE_URL = 'http://119.23.248.54:6001/seller'

/**
 * 网络请求request
 * obj.data 请求接口需要传递的数据
 * obj.showLoading 控制是否显示加载Loading 默认为false不显示
 * obj.contentType 默认为 application/json
 * obj.method 请求的方法  默认为GET
 * obj.url 请求的接口路径 
 * obj.message 加载数据提示语
 */
var timeOut = null
function request(obj) {
  let shake = obj.shake || false
  let shakeTime = obj.shakeTime || 300
  return new Promise(function (resolve, reject) {
    if (obj.showLoading == undefined ? true : obj.showLoading) {
      ui.showLoading(obj.message ? obj.message : '加载中...');
    }
    var data = {};
    if (obj.data) {
      data = obj.data;
    }
    var contentType = 'application/json';
    if (obj.contentType) {
      contentType = obj.contentType;
    }
    var method = 'GET';
    if (obj.method) {
      method = obj.method;
    }
    var mobile = '';
    if (wx.getStorageSync('phoneNum') != '' && wx.getStorageSync('phoneNum') != null) {
      mobile = wx.getStorageSync('phoneNum');
    }
    var merchantId = '';
    if (wx.getStorageSync('memberId') != '' && wx.getStorageSync('memberId') != null) {
      merchantId = wx.getStorageSync('memberId');
    }
    if (shake) {
      timeOut && clearTimeout(timeOut)
      /* 第一种防抖效果：防抖时间内只执行第一次触发 */
      let timer = !timeOut
      if (timer) {
        wx.request({
          url: BASE_URL + obj.url,
          data: data,
          method: method,
          //添加请求头
          header: {
            'Content-Type': contentType,
            //调试ID
            // 'appId': 'wxd751aa4b47832f36',
            //正式ID
            'appId': 'wx17ef5b9919162a78',
            'mobile': mobile,
            'merchantId': merchantId,
          },
          //请求成功
          success: function (res) {
            console.log('===============================================================================================')
            console.log('==    接口地址：' + BASE_URL + obj.url);
            console.log('==    接口参数：' + JSON.stringify(data));
            console.log('==    请求类型：' + method);
            console.log("==    接口状态：" + res.statusCode);
            console.log("==    接口数据：" + JSON.stringify(res.data));
            console.log('===============================================================================================')
            if (res.statusCode == 200) {
              resolve(res);
            } else if (res.statusCode == 401) {//授权失效
              reject("登录已过期");
            } else {
              //请求失败
              reject("请求失败：" + res.statusCode)
            }
          },
          fail: function (err) {
            //服务器连接异常
            console.log('===============================================================================================')
            console.log('==    接口地址：' + obj.url)
            console.log('==    接口参数：' + JSON.stringify(data))
            console.log('==    请求类型：' + obj.method)
            console.log("==    服务器连接异常", err)
            console.log('===============================================================================================')
            reject("服务器连接异常，请检查网络再试");
          },
          complete: function () {
            ui.hideLoading();
          }
        })
      }
      timeOut = setTimeout(() => {
        timeOut = null
      }, shakeTime)
    } else {
      wx.request({
        url: BASE_URL + obj.url,
        data: data,
        method: method,
        //添加请求头
        header: {
          'Content-Type': contentType,
          //调试ID
          // 'appId': 'wxd751aa4b47832f36',
          //正式ID
          'appId': 'wx17ef5b9919162a78',
          'mobile': mobile,
          'merchantId': merchantId,
        },
        //请求成功
        success: function (res) {
          console.log('===============================================================================================')
          console.log('==    接口地址：' + BASE_URL + obj.url);
          console.log('==    接口参数：' + JSON.stringify(data));
          console.log('==    请求类型：' + method);
          console.log("==    接口状态：" + res.statusCode);
          console.log("==    接口数据：" + JSON.stringify(res.data));
          console.log('===============================================================================================')
          if (res.statusCode == 200) {
            resolve(res);
          } else if (res.statusCode == 401) {//授权失效
            reject("登录已过期");
          } else {
            //请求失败
            reject("请求失败：" + res.statusCode)
          }
        },
        fail: function (err) {
          //服务器连接异常
          console.log('===============================================================================================')
          console.log('==    接口地址：' + obj.url)
          console.log('==    接口参数：' + JSON.stringify(data))
          console.log('==    请求类型：' + obj.method)
          console.log("==    服务器连接异常", err)
          console.log('===============================================================================================')
          reject("服务器连接异常，请检查网络再试");
        },
        complete: function () {
          ui.hideLoading();
        }
      })
    }

  }).catch(res => {
    reject(res)
  })
}

module.exports = {
  request,
}